/**
 * 网关服务
 *
 * API分发
 * 验证token
 * 限流控制
 *
 * 鉴权
 *
 * spring.cloud.gateway 下节点配置
 *  globalcors：次节点下的配置是为了解决SpringCLoud Gateway跨域的问题
 *  routes：标识一个路由数组，可以在次节点下配置多个路由信息
 *      id：当前路由的唯一标识
 *      order：路由的优先级、数字越小标识优先级越高
 *      predicates：网关断言，也就是路由转发的条件，也是一个数组，可以饿皮质多个路由转发条件
 *          Path：当客户端请求的路径满足Path的规则时，进行路由转发操作
 *      filters： 网关过滤器，在过滤器中可以修改请求参数和header信息，以及响应的结果和header信息，网关过滤器也是一个数组，可以配置多个过滤规则
 *          StripPrefix：网关在进行路由转发前，会去掉1层访问路径。
 *
 *
 *
 * Please set spring.main.web-application-type=reactive or remove spring-boot-starter-web dependency.
 * 原因：getaway组件中的spring-boot-stater-webflux 和 springboot作为web项目启动必不可少的spring-boot-stater-web出现冲突
 * 因为spring-boot-stater-web 是基于传统的Servlet的（阻塞式应用），而spring-cloud-gateway是基于Spring WebFlux（响应式应用），后者要求非阻塞的运行模式
 *  需要将应用设置为响应式模式，添加如下配置
 *  spring.main.web-application-type=reactive
 */
package com.medical.gateway;